<?php


namespace app\api\validate;


use app\lib\exception\parameterException;
use think\Exception;
use think\Request;
use think\Validate;

class baseValidate extends Validate {

    public function goCheck(){
        //获取http传入的参数
        //对参数做校验
        $request = Request::instance();
        $params = $request->param();
        if(!($this->check($params))){
            //通过全局异常来处理，抛出自定义的异常
            //出现了异常，不管是什么异常只要将异常抛出即可
            //抛出异常后会按照我们的写好的处理机制来返回具体的异常数据
            $e = new parameterException(array(
                'msg'=>$this->error,
            ));
//            $e->msg = $this->error;
            throw $e;

            //没有全局异常处理机制的情况下，抛出的系统错误，
//            $error = $this->error;
//            throw new Exception($error);
        }
        return true;
    }

    //公共的验证参数为正整数
    protected function isInteger($value,$rule='',$data='',$field){
        if(is_numeric($value) && is_int($value + 0 ) && ($value + 0)){
            return true;
        }else{
            return false;
//            return $field.'必须是正整数';
        }

    }

    //判断是否为空
    protected function isNotEmpty($data){
        if(empty($data)){
            return false;
        }else{
            return true;
        }
    }

    //只获取验证规则中的数据
    public function getDataByRule($arrays){
        //此次代码中，不需要前端传入user_id和uid,如果前端传入了该数据，认为其为非法操作，过滤掉数据
        if(array_key_exists('user_id',$arrays) || array_key_exists('uid',$arrays)){
            throw  new parameterException(['msg'=>'参数中包含非法的user_id和uid']);
        }
        $newArray = array();
        foreach ($this->rule as $key => $value){
            $newArray[$key] = $arrays[$key];
        }
        return $newArray;
    }


    //手机号的验证
    protected function isMobile($value){
        $rule = '^1(3|4|5|7|8)[0-9]\d{8}$^';
        $result = preg_match($rule, $value);
        if ($result) {
            return true;
        } else {
            return false;
        }
    }
}











